##Exercicio - Aula 3 - Leitura e Manipulao de dados
# Camila Galheigo Coelho                      

getwd()  #ok! vamos l

#DISTANCIA ENTRE CIDADES#

#Questao 1:
Ate.Mad<-3949
Ate.Par<-3000
Ate.Est<-3927
Mad.Par<-1273
Mad.Est<-3188
Par.Est<-1827

?matrix
mat.dist.EU<-matrix(c(0,Ate.Mad,Ate.Par,Ate.Est,Ate.Mad,0,Mad.Par,Mad.Est,Ate.Par,Mad.Par,0,Par.Est,Ate.Est,Mad.Est,Par.Est,0),ncol=4,nrow=4)
mat.dist.EU

?matrix
colnames("Atenas", "Madri", "Paris", "Estocolmo") # Erro
rownames("Atenas", "Madri", "Paris", "Estocolmo") # Erro

colnames(mat.dist.EU)<-c("Atenas", "Madri", "Paris", "Estocolmo")
rownames(mat.dist.EU)<-c("Atenas", "Madri", "Paris", "Estocolmo")

mat.dist.EU   #OK!                Atenas Madri Paris Estocolmo
			Atenas         0  3949  3000      3927
			Madri        949     0  1273      3188
			Paris        000  1273     0      1827
			Estocolmo   3927  3188  1827         0

class(mat.dist.EU)  # "matrix"

#Questao 2:
search() # package:datasets presente
eurodist

class(eurodist)  # [1] "dist" 

?dist
> mat.dist.EU<-as.dist(mat.dist.EU,diag=FALSE,upper=FALSE)
> mat.dist.EU

# retorna:           Atenas Madri Paris
#         Madri       3949            
#         Paris       3000  1273      
#         Estocolmo   3927  3188  1827


save.image()


#CRIACAO DE UM DATAFRAME#

#Questao 1:
dif.peso.hamst<-c(0.1, 1.1, 3.7, 5.7, -1.2, -1.5, 3.0, -0.4, 0.6, 1.5, -0.1, 2.0, 0.6, -3.0, -0.3, -0.2, 0.3, 1.5)
dif.peso.hamst
dieta<-c(rep("A",3),rep("B",3),rep("C",3),rep("A",3),rep("B",3),rep("C",3))  
dieta
fen.hamst<-c(rep("claro",9),rep("escuro",9))
fen.hamst
?data.frame
exp.hamst<-data.frame(dif.peso.hamst,dieta,fen.ham)
exp.hamst

#Questao 2:
dieta<-factor(dieta)
fen.hamst<-factor(fen.hamst)
?apply()
tapply(exp.hamst$dif.peso.hamst,INDEX=dieta,FUN=mean)
#       A        B        C 
#1.383333 0.050000 0.800000	  
tapply(exp.hamst$dif.peso.hamst,INDEX=fen.hamst,FUN=mean)
#    claro     escuro
#1.2333333  0.255556
save.image()


# Criando uma Matriz #

#Questao 1:
?rnorm() # rnorm(n, mean = 0, sd = 1)
valores <- rnorm(15, mean=10, sd=sqrt(3.6))
valores
?matrix  # matrix(data = NA, nrow = 1, ncol = 1, ...)
rand.matrix.1<-matrix(data=valores, nrow = 3, ncol = 5)
rand.matrix.1
class(rand.matrix.1)

#Questao 2
args(paste)
rownames(rand.matrix.1)<-paste("L",1:3)
colnames(rand.matrix.1)<-paste("C",1:5)
rand.matrix.1

#Questao 3
#lembrando que $ no funciona para matrizes usar apply()
args(apply)
?apply
media.col<-apply(rand.matrix.1,MARGIN=2,FUN=mean)  # MARGIN=2 seleciona dados das colunas da matriz     
media.col
var.col<-apply(rand.matrix.1,2,var)
var.col
media.lin<-apply(rand.matrix.1,1,mean)             # MARGIN=1=linha
media.lin
var.lin<-apply(rand.matrix.1,1,var)
var.lin

media.var<-data.frame(c(media.col,media.lin),c(var.col,var.lin))
names(media.var)<-c("mdia","variancia")
media.var
# retorna:
#        mdia  variancia
#C 1  9.038787  1.0063074
#C 2 11.652740  0.7613673
#C 3  9.209631 16.7866744
#C 4 10.241293  2.2449045
#C 5 11.428023  2.8201474
#L 1  9.683225  7.5513564
#L 2 10.171605  3.4452670
#L 3 11.087455  3.9558619

save.image()


# Lendo e salvando seus dados #

read.table("camila quebra coco.csv",header=T, sep=";")
quebra.coco<-read.table("camila quebra coco.csv",header=T, sep=";")
summary(quebra.coco)

freq.indvs<-quebra.coco$individuos
fx.et<-<-quebra.coco$faixa.etaria
sex<-quebra.coco$sexo
alvo.obs<-quebra.coco$alvo.observ
displcmt<-quebra.coco$displacement
golpes<-quebra.coco$golpes
cocos.quebrados<-quebra.coco$cocos.quebrados
dur<-quebra.coco$duracao

save.image()

write.csv("qualid.quebra.coco.csv",sep=";", row.names=TRUE) 

# Classes de Objetos #

#Questao 1:
class(iris)  # "data.frame"
mode(iris)   # "list"
length(iris) # 5

class(iris3)  #"array"
mode(iris3)   #"numeric"
length(iris3) #600

#Questao 2
apply(iris,2,mean)   #erro: argument is not numeric or logical 
? apply #descobri que esta funo s pode ser usada com matrix ou array. Entao tranformei iris em matrix.
iris.1<-as.matrix(iris)
class(iris.1)   # "matrix"
mode(iris.1)    # "character"    Nada feito, no posso calcular mdias de caracteres.. e agora?

#vi a cara de iris e resolvi fazer os clculos, indexando as linha correspondentes a cada especie. 
iris
apply(iris[1:50,1:4],2,mean)   #onde 1:50 espcie setosa
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
#       5.006        3.428        1.462        0.246 

apply(iris[51:100,1:4],2,mean)  #onde 51:100 espcie versicolor
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
#       5.936        2.770        4.260        1.326 

apply(iris[101:150,1:4],2,mean)  #onde 101:150 espcie virginica
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
#       6.588        2.974        5.552        2.026 
  
#para iris3 o mtodo acima no funciona. Erro:
#entao tranformei iris3 em um dataframe:
iris3.b<-as.data.frame(iris3)
iris3.c  #cada coluna representa a medida para cada espcie, assim  s calcular a mdia para cada coluna.
apply(iris3.c,2,mean)
#    Sepal L..Setosa     Sepal W..Setosa     Petal L..Setosa     Petal W..Setosa Sepal L..Versicolor Sepal W..Versicolor Petal L..Versicolor 
#              5.006               3.428               1.462               0.246               5.936               2.770               4.260 
#Petal W..Versicolor  Sepal L..Virginica  Sepal W..Virginica  Petal L..Virginica  Petal W..Virginica 
#              1.326               6.588               2.974               5.552               2.026 


# Questao 3:
colnames(iris3.b)<-c("comp.sep.setosa","larg.sep.setosa","comp.pet.setosa","larg.pet.setosa","comp.sep.versicolor","larg.sep.versicolor","comp.pet.versicolor","larg.pet.versicolor","compr.sep.virginica","larg.sep.virginica","comp.pet.virginica","larg.pet.virginica")
iris3.b

colnames(iris)<-c("sepala.comp","sepala.larg","petala.comp","petala.larg")
iris


# Acrescentando dados de sintese #

#Q1:
read.table("esaligna.csv",header=TRUE,sep=",",as.is=TRUE)
biomass.eucalyp<-read.table("esaligna.csv",header=TRUE,sep=",",as.is=TRUE)

#Q2:
summary(biomass.eucalyp)
class(biomass.eucalyp)  #"data.frame" 
mode(biomass.eucalyp)   #"list"

#Q3:
biomass.tronco<-biomass.eucalyp$tronco
biomass.folha<-biomass.eucalyp$folha
biomass.tron.fol<-biomass.tronco+biomass.folha
biomass.eucalyp$biomass.total<-biomass.tron.fol
summary(biomass.eucalyp)

#Q4:
dap<-biomass.eucalyp$dap
area.basal<-2*pi*(dap/2)
biomass.eucalyp$area.basal<-area.basal
summary(biomass.eucalyp)

#Q5:
area.basal.talhao<-aggregate(biomass.eucalyp$area.basal,by=list(biomass.eucalyp$talhao), FUN=sum)
area.basal.talhao

#Q6:
media.area.basal.talhao<-aggregate(biomass.eucalyp$area.basal,by=list(biomass.eucalyp$talhao), FUN=mean)
media.area.basal.talhao

#Q7:
biomass.eucalyp.dapmaior10<-biomass.eucalyp[biomass.eucalyp$dap>10, ]
biomass.eucalyp.dapmaior10

#Q8:
write.table("Biomass Eucalyp Maior.txt",sep="\t", row.names=TRUE)